package com.ly.system.manager;

import com.ly.common.core.constants.CacheConstants;
import com.ly.common.redis.service.RedisService;
import com.ly.system.domain.exam.Exam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
//这是一个用于管理考试(Exam)缓存的 Redis 操作类，主要功能包括添加缓存和删除缓存。
public class ExamCacheManager {
    @Autowired

    private RedisService redisService;


    public void addCache(Exam exam) {
//        将考试对象添加到 Redis 缓存中
//        将考试ID添加到"未完成考试列表"的头部(使用leftPushForList)
//        将完整的考试对象存入缓存，键名为考试详情键(EXAM_DETAIL + examId)
        redisService.leftPushForList(getExamListKey(), exam.getExamId());
        redisService.setCacheObject(getDetailKey(exam.getExamId()), exam);
    }

    public void deleteCache(Long examId) {
//        从 Redis 中删除指定考试ID的缓存
//        从"未完成考试列表"中移除该考试ID
//        删除该考试的详情缓存
//        删除该考试的问题列表缓存
        redisService.removeForList(getExamListKey(), examId);
        redisService.deleteObject(getDetailKey(examId));
        redisService.deleteObject(getExamQuestionListKey(examId));
    }
    private String getExamListKey() {
        //未完赛列表
        return CacheConstants.EXAM_UNFINISHED_LIST;
    }

    private String getDetailKey(Long examId) {
        //已完赛列表
        return CacheConstants.EXAM_DETAIL + examId;
    }

    private String getExamQuestionListKey(Long examId) {
        //竞赛详情信息
        return CacheConstants.EXAM_QUESTION_LIST + examId;
    }

}
